home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / gdebi < prev    next >
Text File  |  2009-09-23  |  4KB  |  112 lines

  1. #!/usr/bin/python
  2. #
  3. # Copyright (c) 2005-2009 Canonical Ltd
  4. #
  5. # AUTHOR:
  6. # Michael Vogt <mvo@ubuntu.com>
  7. #
  8. # This file is part of GDebi
  9. #
  10. # GDebi is free software; you can redistribute it and/or
  11. # modify it under the terms of the GNU General Public License as published
  12. # by the Free Software Foundation; either version 2 of the License, or (at
  13. # your option) any later version.
  14. #
  15. # GDebi is distributed in the hope that it will be useful,
  16. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  18. # General Public License for more details.
  19. #
  20. # You should have received a copy of the GNU General Public License
  21. # along with GDebi; if not, write to the Free Software
  22. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  23. #
  24.  
  25. import warnings
  26. from warnings import warn
  27. warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
  28. import sys
  29. import apt
  30. import os.path
  31. import gettext
  32. from gettext import gettext as _
  33.  
  34. from optparse import OptionParser
  35. from GDebi.GDebiCli import GDebiCli
  36. from GDebi.Version import VERSION
  37.  
  38. # FIXME: - add "--assume-yes" option
  39. #        - add check for removal of essential packages
  40.  
  41. if __name__ == "__main__":
  42.     localesApp="gdebi"
  43.     localesDir="/usr/share/locale"
  44.     gettext.bindtextdomain(localesApp, localesDir)
  45.     gettext.textdomain(localesApp)
  46.  
  47.     usage = unicode(_("usage: %prog [options] filename\n"
  48.                       "For a graphical version run gdebi-gtk\n"),"UTF-8")
  49.     parser = OptionParser(usage=usage, version = VERSION)
  50.     parser.add_option("-n", "--non-interactive",
  51.                       action="store_true", dest="non_interactive",
  52.                       default=False,
  53.                       help=unicode(_("Run non-interactive (dangerous!)"),"UTF-8"))
  54.     parser.add_option("-o", "--option",
  55.                       action="append", dest="apt_opts",
  56.                       default=[],
  57.                       help=unicode(_("Set an APT configuration option"),"UTF-8"))
  58.     parser.add_option("-q", "--quiet",
  59.                       action="store_true", dest="quiet",
  60.                       default=False,
  61.                       help=unicode(_("Do not show progress information"),"UTF-8"))
  62.     parser.add_option("--apt-line",
  63.                       action="store_true", dest="apt_line",
  64.                       default=False,
  65.                       help=unicode(_("Simulate only and print a apt-get install compatible line to stderr"), "UTF-8"))
  66.     parser.add_option("--root", dest="rootdir", default="/",
  67.                       help=unicode(_("Use alternative root dir"), "UTF-8"))
  68.     (options, args) = parser.parse_args()
  69.  
  70.     if len(args) == 0:
  71.         parser.print_help()
  72.         sys.exit(1)
  73.  
  74.     if not os.path.exists(args[0]):
  75.         sys.stderr.write(_("gdebi error, file not found: %s\n" % args[0]))
  76.         sys.exit(1)
  77.  
  78.     try:
  79.         debi = GDebiCli(options)
  80.     except SystemError, e:
  81.         print "Error opening the cache:\n%s" % e
  82.         sys.exit(1)
  83.     if not debi.open(args[0]):
  84.         sys.exit(1)
  85.  
  86.     if options.apt_line == True:
  87.         (install, remove, unauthenticated) = debi._deb.requiredChanges
  88.         print " ".join(install)
  89.         print " ".join([pkg+"-" for pkg in remove])
  90.         sys.exit(0)
  91.  
  92.     if options.non_interactive == True:
  93.         if os.getuid() != 0:
  94.             print _("Need to be root to install packages")
  95.             sys.exit(1)
  96.         debi.install()
  97.         sys.exit(0)
  98.  
  99.     # show information
  100.     debi.show_dependencies()
  101.     debi.show_description()
  102.     # check if we actually can install it
  103.     if os.getuid() != 0:
  104.         print _("Need to be root to install packages")
  105.         sys.exit(1)
  106.     print _("Do you want to install the software package? [y/N]:"),
  107.     sys.stdout.flush()
  108.     res = sys.stdin.readline()
  109.     # TRANSLATORS: the first char in a "Yes" word
  110.     if res.upper().startswith(_("Y")):
  111.         debi.install()
  112.